﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MJM.CBD.Conn;
using MJM.SPP.EntidadesNegocio;
using System.Data;
using System.Data.SqlClient;

namespace MJM.SPP.AccesoDatos
{
    public class ProgramaAD
    {
        public  List<ProgramaEN> Listar()
        { 
            //sp_s_T_WEB_PROMUN_Listar

            List<ProgramaEN> lst = new List<ProgramaEN>();
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_T_WEB_PROMUN_Listar", conn);
            cmd.CommandType = CommandType.StoredProcedure;            
            SqlDataReader dr;
            try
            {
                cmd.Connection.Open();
                dr = cmd.ExecuteReader();

                ProgramaEN obj;
                while (dr.Read())
                {
                    obj = new ProgramaEN();
                    obj.PROMUN_inID = dr.GetInt32(0);
                    obj.PROMUN_chNOMPRO = dr.GetString(1);
                    obj.PROMUN_chDESPRO = dr.GetString(2);
                    obj.PROMUN_inFLAELI = dr.GetInt32(3);
                    obj.Codigo = dr.GetString(4);
                    obj.Enlace = dr.GetString(6);
                    obj.EnvParametro = dr.GetInt32(5);
                    lst.Add(obj);
                }

                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }
            return lst;
        }

        public int Insertar(ProgramaEN obj)
        {
            int codigo = 0;
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_i_T_WEB_PROMUN_Insertar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmNombre, prmEnlace,prmcodigo,prmcodigo2,prmparam,prmDescripcion;

            try
            {
                prmEnlace = cmd.CreateParameter();
                prmEnlace.ParameterName = "@vPROMUN_chDIRURL";
                prmEnlace.SqlDbType = SqlDbType.VarChar;
                prmEnlace.Value = obj.Enlace;
                cmd.Parameters.Add(prmEnlace);

                prmNombre = cmd.CreateParameter();
                prmNombre.ParameterName = "@vPROMUN_chNOMPRO";
                prmNombre.SqlDbType = SqlDbType.VarChar;
                prmNombre.Value = obj.PROMUN_chNOMPRO;
                cmd.Parameters.Add(prmNombre);

                prmcodigo2 = cmd.CreateParameter();
                prmcodigo2.ParameterName = "@vPROMUN_chCODPRO";
                prmcodigo2.SqlDbType = SqlDbType.VarChar;
                prmcodigo2.Value = obj.Codigo;
                cmd.Parameters.Add(prmcodigo2);

                prmparam = cmd.CreateParameter();
                prmparam.ParameterName = "@vPROMUN_inFLAPAR";
                prmparam.SqlDbType = SqlDbType.Int;
                prmparam.Value = obj.EnvParametro;
                cmd.Parameters.Add(prmparam);
                                
                prmDescripcion = cmd.CreateParameter();
                prmDescripcion.ParameterName = "@vPROMUN_chDESPRO";
                prmDescripcion.SqlDbType = SqlDbType.VarChar;
                prmDescripcion.Value = obj.PROMUN_chDESPRO;
                cmd.Parameters.Add(prmDescripcion);

                prmcodigo = cmd.CreateParameter();
                prmcodigo.Direction = ParameterDirection.ReturnValue;
                prmcodigo.SqlDbType = SqlDbType.Int;
                cmd.Parameters.Add(prmcodigo);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                codigo = Convert.ToInt32(prmcodigo.Value);
                cmd.Connection.Close();
                conn.Dispose();
                cmd.Dispose();
            }
            catch(Exception ex)
            {
                conn.Dispose();
                cmd.Dispose();
            }

            return codigo;
        }

        public int Modificar(ProgramaEN obj)
        {
            int codigo = 0;
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_u_T_WEB_PROMUN_Modificar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmNombre, prmEnlace, prmcodigo, prmEliminado, prmcodigo2, prmParametro, prmDescripcion;

            try
            {
                prmNombre = cmd.CreateParameter();
                prmNombre.ParameterName = "@vPROMUN_chNOMPRO";
                prmNombre.SqlDbType = SqlDbType.VarChar;
                prmNombre.Value = obj.PROMUN_chNOMPRO;
                cmd.Parameters.Add(prmNombre);

                prmEnlace = cmd.CreateParameter();
                prmEnlace.ParameterName = "@vPROMUN_chDIRURL";
                prmEnlace.SqlDbType = SqlDbType.VarChar;
                prmEnlace.Value = obj.Enlace;
                cmd.Parameters.Add(prmEnlace);

                prmcodigo2 = cmd.CreateParameter();
                prmcodigo2.ParameterName = "@vPROMUN_chCODPRO";
                prmcodigo2.SqlDbType = SqlDbType.VarChar;
                prmcodigo2.Value = obj.Codigo;
                cmd.Parameters.Add(prmcodigo2);

                prmcodigo = cmd.CreateParameter();
                prmcodigo.ParameterName = "@vPROMUN_inID";
                prmcodigo.SqlDbType = SqlDbType.Int;
                prmcodigo.Value = obj.PROMUN_inID;
                cmd.Parameters.Add(prmcodigo);

                prmDescripcion = cmd.CreateParameter();
                prmDescripcion.ParameterName = "@vPROMUN_chDESPRO";
                prmDescripcion.SqlDbType = SqlDbType.VarChar;
                prmDescripcion.Value = obj.PROMUN_chDESPRO;
                cmd.Parameters.Add(prmDescripcion);

                prmEliminado = cmd.CreateParameter();
                prmEliminado.ParameterName = "@vPROMUN_inFLAELI";
                prmEliminado.SqlDbType = SqlDbType.Int;
                prmEliminado.Value = obj.PROMUN_inFLAELI;
                cmd.Parameters.Add(prmEliminado);

                prmParametro = cmd.CreateParameter();
                prmParametro.ParameterName = "@vPROMUN_inFLAPAR";
                prmParametro.SqlDbType = SqlDbType.Int;
                prmParametro.Value = obj.EnvParametro;
                cmd.Parameters.Add(prmParametro);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
                codigo = 1;
                conn.Dispose();
                cmd.Dispose();
            }
            catch (Exception ex)
            {
                conn.Dispose();
                cmd.Dispose();
                codigo = 0;
            }
            return codigo;
        }
    }
}
